#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
#include <time.h>
#include <fmod.h>
#include "jeu.h"




void Jouer(SDL_Surface* ecran,long charger)
{
    long i,k,j,l;
    long map[NombreMaps][100][5],mapEntite[NombreMaps][50][3],caracteristiqueMap[NombreMaps][2],nombreEvents[NombreMaps],nombreEntite[NombreMaps],niveauEnCours=0;
    long MOUSE=0;
    long continuer=1;
    char ecrire[50];
    long space=0;
    long tourner;
    long tempsActuel=0,deplacementPrecedent=0;
    long deplacementDroite=0,deplacementHaut=0,allerADroite=0,allerAGauche=0,saut=0,sautage=0, abaisser=0, regarderEnHaut=0;
    long gauche=0,droit=0,arretGauche=0;
    long etatMario=NORMAL_DROITE;
    long descentePrecedent=0,montePrecedent=0,pasPrecedent=0,animationPrecedent=0,deplacementTortuePrecedent=0, mourrirPrecedent=0,descendre=0,toucheTerre=0,collisionMurGauche=0,collisionMurDroite=0;
    long vie=3,piece=0;
    long animationPieceMenu=1;
    long mort=0;

    TTF_Init();
    FSOUND_Init(44100, 32, 0);
    FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
    FSOUND_SetDriver(0);

    TTF_Font *police = NULL,*police2=NULL,*policeGrande,*policeMenu;

    SDL_Color couleurNoire = {0, 0, 0};

    police = TTF_OpenFont("data/autre/arial.ttf", 16);
    police2 = TTF_OpenFont("data/autre/arial.ttf", 12);
    policeMenu = TTF_OpenFont("data/autre/comic.ttf", 28);
    policeGrande = TTF_OpenFont("data/autre/arial.ttf", 120);

    SDL_Surface *texte = NULL,*mario,*general,*background,*background2;
    SDL_Rect position,positionTexte,positionZero,positionMario,partieImageMario[NombreMario],positionDecors,partieImageFond[4],partieImageDecors[NombreDecors],partieImageEntite[NombreEntite],positionFond;
    
    FMUSIC_MODULE *musique = NULL;
    musique = FMUSIC_LoadSong("data/sons/smwovr1.mid");
    
    FSOUND_SAMPLE *prendrePiece = NULL, *pup = NULL, *sauter;
    
    prendrePiece = FSOUND_Sample_Load(FSOUND_FREE, "data/sons/54.wav", 0, 0, 0);
    pup = FSOUND_Sample_Load(FSOUND_FREE, "data/sons/43.wav", 0, 0, 0);
    sauter = FSOUND_Sample_Load(FSOUND_FREE, "data/sons/jump.wav", 0, 0, 0);

    positionZero.x=0;
    positionZero.y=0;

    positionMario.x=100;
    positionMario.y=60;


    //SDL_EnableKeyRepeat(30,30);

    SDL_FreeSurface(texte);
    positionTexte.x = 10;
    positionTexte.y = 10;
    sprintf(ecrire,"Chargement");
    texte = TTF_RenderText_Blended(police,ecrire, couleurNoire);
    SDL_BlitSurface(texte, NULL, ecran, &positionTexte);



    SDL_Flip(ecran);
    
    FMUSIC_SetMasterVolume(musique, 100);
    
    FMUSIC_PlaySong(musique);
    FMUSIC_SetLooping(musique, 1);

    mario = IMG_Load("data/sprite/smwmario.gif");
    general = IMG_Load("data/sprite/smwgeneral.gif");
    background = IMG_Load("data/sprite/smwbackground.gif");
    background2 = IMG_Load("data/sprite/smwbackground2.png");

    SDL_SetColorKey(mario, SDL_SRCCOLORKEY, SDL_MapRGB(mario->format, 0, 0, 255));
    SDL_SetColorKey(general, SDL_SRCCOLORKEY, SDL_MapRGB(general->format, 0, 0, 255));

    ChargerMap(map,mapEntite,caracteristiqueMap,nombreEvents,nombreEntite);
    DefinirPartieImage(partieImageFond,partieImageDecors,partieImageMario,partieImageEntite);

    if(charger){
    }

    while (continuer)
    {
    	toucheTerre=0;
    	tourner=0;
    	collisionMurDroite=0;
    	collisionMurGauche=0;
    	arretGauche=0;
        SDL_Event event;
        tempsActuel = SDL_GetTicks();
        
        for(i=0;i<caracteristiqueMap[niveauEnCours][1];i+=512){
        
        positionFond.x=i-deplacementDroite;
        positionFond.y=(223-432)+deplacementHaut;

        SDL_BlitSurface(background2, &partieImageFond[caracteristiqueMap[niveauEnCours][0]], ecran, &positionFond);}
        
        if (tempsActuel - descentePrecedent > 3)
        {
        	
            positionMario.y-=1,descendre=1;
            descentePrecedent = tempsActuel;
        }
        if (tempsActuel - animationPrecedent > 100)
        {
            for(i=0;i<nombreEntite[niveauEnCours];i++)
            {
            if(mapEntite[niveauEnCours][i][0]==PIECE)
            mapEntite[niveauEnCours][i][0]=PIECE2;
            
            else if(mapEntite[niveauEnCours][i][0]==PIECE2)
            mapEntite[niveauEnCours][i][0]=PIECE3;
            
            else if(mapEntite[niveauEnCours][i][0]==PIECE3)
            mapEntite[niveauEnCours][i][0]=PIECE4;
            
            else if(mapEntite[niveauEnCours][i][0]==PIECE4)
            mapEntite[niveauEnCours][i][0]=PIECE;
            
            else if(mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_NORMAL_DROITE)
            mapEntite[niveauEnCours][i][0]=TORTUE_ROUGE_MARCHE_DROITE;
            
            else if(mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_MARCHE_DROITE)
            mapEntite[niveauEnCours][i][0]=TORTUE_ROUGE_NORMAL_DROITE;
            
            else if(mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_NORMAL_GAUCHE)
            mapEntite[niveauEnCours][i][0]=TORTUE_ROUGE_MARCHE_GAUCHE;
            
            else if(mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_MARCHE_GAUCHE)
            mapEntite[niveauEnCours][i][0]=TORTUE_ROUGE_NORMAL_GAUCHE;
            }   
            animationPieceMenu++;
            if(animationPieceMenu>4)
            animationPieceMenu=1;
            animationPrecedent = tempsActuel;
        }
        if (tempsActuel - deplacementTortuePrecedent > 15)
        {
        for(l=0;l<nombreEntite[niveauEnCours];l++)
        {         
        if(mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_NORMAL_DROITE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_MARCHE_DROITE)
        mapEntite[niveauEnCours][l][1]++;
        if(mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_NORMAL_GAUCHE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_MARCHE_GAUCHE)
        mapEntite[niveauEnCours][l][1]--;
        }
        deplacementTortuePrecedent = tempsActuel;  
        tourner=1;
        }
        
        
        
        
            
            
            
        
        
        

        position.x=positionMario.x;
		position.y=223-positionMario.y;

        for(i=0;i<nombreEvents[niveauEnCours];i++)
        {

        	if(map[niveauEnCours][i][0]!=RIEN)
        	{
        	for(j=0;j<map[niveauEnCours][i][3];j++)
        	for(k=0;k<map[niveauEnCours][i][4];k++){
        	positionDecors.x=(map[niveauEnCours][i][1]-deplacementDroite)+(j*partieImageDecors[map[niveauEnCours][i][0]].w);
        	positionDecors.y=(223-(map[niveauEnCours][i][2]-(k*partieImageDecors[map[niveauEnCours][i][0]].h)))+deplacementHaut;
        	SDL_BlitSurface(background, &partieImageDecors[map[niveauEnCours][i][0]], ecran, &positionDecors);

            if(!(mort))
        	if(map[niveauEnCours][i][0]==HERBE_DESSUS||map[niveauEnCours][i][0]==HERBE_COIN_GAUCHE||map[niveauEnCours][i][0]==HERBE_COIN_DROIT){
        	if((position.x+partieImageMario[etatMario].w)>positionDecors.x&&position.x<(positionDecors.x+partieImageDecors[map[niveauEnCours][i][0]].w)
		 	 &&(position.y+partieImageMario[etatMario].h)>positionDecors.y&&(position.y+partieImageMario[etatMario].h)<(positionDecors.y+2)){	 
                  if(descendre){
                  positionMario.y+=1;
                  descendre=0;}
                  
		 	 }
		 	 if((position.x+partieImageMario[etatMario].w)>positionDecors.x&&position.x<(positionDecors.x+partieImageDecors[map[niveauEnCours][i][0]].w)
		 	 &&(position.y+partieImageMario[etatMario].h+1)>positionDecors.y&&(position.y+partieImageMario[etatMario].h)<(positionDecors.y+partieImageDecors[map[niveauEnCours][i][0]].h+1))
		 	 toucheTerre=1;
        	 }
        	 if(map[niveauEnCours][i][0]==HERBE_DROITE||map[niveauEnCours][i][0]==HERBE_GAUCHE){
        	 if((position.x+partieImageMario[etatMario].w)>positionDecors.x&&position.x<(positionDecors.x+partieImageDecors[map[niveauEnCours][i][0]].w)
		 	  &&(position.y+partieImageMario[etatMario].h)>positionDecors.y&&position.y<(positionDecors.y+partieImageDecors[map[niveauEnCours][i][0]].h)){	 
                  if(droit)
                  collisionMurDroite=1;
                  if(gauche)
                  collisionMurGauche=1;
                  
		 	 }
        	 }
        	 
        	 for(l=0;l<nombreEntite[niveauEnCours];l++)
             {  
             if(mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_NORMAL_DROITE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_NORMAL_GAUCHE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_MARCHE_DROITE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_MARCHE_GAUCHE)
             if(map[niveauEnCours][i][0]==HERBE_COIN_GAUCHE||map[niveauEnCours][i][0]==HERBE_COIN_DROIT||map[niveauEnCours][i][0]==TERRE_COIN_GAUCHE||map[niveauEnCours][i][0]==TERRE_COIN_DROIT||map[niveauEnCours][i][0]==HERBE_GAUCHE||map[niveauEnCours][i][0]==HERBE_DROITE){
        	 if(((mapEntite[niveauEnCours][l][1]-deplacementDroite)+partieImageEntite[mapEntite[niveauEnCours][l][0]].w)>positionDecors.x&&(mapEntite[niveauEnCours][l][1]-deplacementDroite)<(positionDecors.x+partieImageDecors[map[niveauEnCours][i][0]].w)
		 	 &&((223-mapEntite[niveauEnCours][l][2])+partieImageEntite[mapEntite[niveauEnCours][l][0]].h)>positionDecors.y-1&&(223-mapEntite[niveauEnCours][l][2])+partieImageEntite[mapEntite[niveauEnCours][l][0]].h<positionDecors.y+partieImageDecors[map[niveauEnCours][i][0]].h){	 
             if(mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_NORMAL_DROITE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_MARCHE_DROITE)
             mapEntite[niveauEnCours][l][0]=TORTUE_ROUGE_NORMAL_GAUCHE,mapEntite[niveauEnCours][l][1]--;
             else if(mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_NORMAL_GAUCHE||mapEntite[niveauEnCours][l][0]==TORTUE_ROUGE_MARCHE_GAUCHE)
             mapEntite[niveauEnCours][l][0]=TORTUE_ROUGE_NORMAL_DROITE,mapEntite[niveauEnCours][l][1]++;
		 	 }
             }
             }         	
        	 }
        	 }
        }
        for(i=0;i<nombreEntite[niveauEnCours];i++)
        {
        	if(mapEntite[niveauEnCours][i][0]!=RIEN)
        	{
            positionDecors.x=(mapEntite[niveauEnCours][i][1]-deplacementDroite);
            positionDecors.y=(223-mapEntite[niveauEnCours][i][2])+deplacementHaut;  
        	SDL_BlitSurface(general, &partieImageEntite[mapEntite[niveauEnCours][i][0]], ecran, &positionDecors);
        	
        	 if(!(mort)){
        	 if((position.x+partieImageMario[etatMario].w)>positionDecors.x&&position.x<(positionDecors.x+partieImageEntite[map[niveauEnCours][i][0]].w)
		 	  &&(position.y+partieImageMario[etatMario].h)>positionDecors.y+5&&position.y<(positionDecors.y+partieImageEntite[map[niveauEnCours][i][0]].h)){	 
		 	 if(mapEntite[niveauEnCours][i][0]==PIECE||mapEntite[niveauEnCours][i][0]==PIECE2||mapEntite[niveauEnCours][i][0]==PIECE3||mapEntite[niveauEnCours][i][0]==PIECE4){
             piece++;
             FSOUND_PlaySound(FSOUND_FREE, prendrePiece);
             mapEntite[niveauEnCours][i][0]=RIEN;
		 	 }
		 	 else if(mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_NORMAL_DROITE||mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_NORMAL_GAUCHE)
		 	 mort=1,positionMario.y+=50,etatMario=MORT1,SDL_BlitSurface(mario, &partieImageMario[etatMario], ecran, &position),SDL_Flip(ecran),SDL_Delay(1000);
		 	 
		 	 
        	 }
        	 if(mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_NORMAL_DROITE||mapEntite[niveauEnCours][i][0]==TORTUE_ROUGE_NORMAL_GAUCHE)
        	 if((position.x+partieImageMario[etatMario].w)>positionDecors.x&&position.x<(positionDecors.x+partieImageEntite[map[niveauEnCours][i][0]].w)
		 	  &&(position.y+partieImageMario[etatMario].h)>positionDecors.y&&position.y<(positionDecors.y+5)){
		 	  mapEntite[niveauEnCours][i][0]=TORTUE_CARAPACE_ROUGE,positionMario.y+=20,mapEntite[niveauEnCours][i][2]-=11,FSOUND_PlaySound(FSOUND_FREE, pup);
		 	  }
        	 }
        	
        	}  	
        }

        
        position.x=positionMario.x;
		position.y=223-positionMario.y;

        SDL_BlitSurface(mario, &partieImageMario[etatMario], ecran, &position);
        
        SDL_FreeSurface(texte);
        positionTexte.x = 10;
        positionTexte.y = 10;
        sprintf(ecrire,"Mario");
        texte = TTF_RenderText_Solid(police,ecrire, couleurNoire);
        SDL_BlitSurface(texte, NULL, ecran, &positionTexte);
        
        SDL_FreeSurface(texte);
        positionTexte.x = 15;
        positionTexte.y = 25;
        sprintf(ecrire,"x %ld",vie);
        texte = TTF_RenderText_Solid(police,ecrire, couleurNoire);
        SDL_BlitSurface(texte, NULL, ecran, &positionTexte);
        
        positionTexte.x = 200-16;
        positionTexte.y = 12;
        SDL_BlitSurface(general, &partieImageEntite[animationPieceMenu], ecran, &positionTexte);
        
        SDL_FreeSurface(texte);
        positionTexte.x = 200;
        positionTexte.y = 10;
        sprintf(ecrire,"X %ld",piece);
        texte = TTF_RenderText_Solid(police,ecrire, couleurNoire);
        SDL_BlitSurface(texte, NULL, ecran, &positionTexte);


        SDL_Flip(ecran);

        while(SDL_PollEvent(&event)) {

        switch(event.type)
        {
            case SDL_MOUSEBUTTONDOWN:
            MOUSE=1;
            break;

            case SDL_MOUSEBUTTONUP:
            MOUSE=0;
            break;

            case SDL_KEYDOWN :
                 switch(event.key.keysym.sym)
                 {

                     case SDLK_SPACE:
                     space=1;
                     break;

                     case SDLK_RIGHT:
                     allerADroite=1;
                     break;

                     case SDLK_LEFT:
                     allerAGauche=1;
                     break;
                     
                     case SDLK_DOWN:
                     if(!(abaisser)&&(etatMario==NORMAL_GAUCHE||etatMario==MARCHE_GAUCHE||etatMario==NORMAL_DROITE||etatMario==MARCHE_DROITE)){
                     abaisser=1;
                     positionMario.y-=6;
                     if(etatMario==NORMAL_GAUCHE||etatMario==MARCHE_GAUCHE)
                     etatMario=ABAISSER_GAUCHE;
                     else
                     etatMario=ABAISSER_DROITE;
                     }
                     break;
                     
                     case SDLK_UP:
                     if(!(regarderEnHaut)&&(etatMario==NORMAL_GAUCHE||etatMario==MARCHE_GAUCHE||etatMario==NORMAL_DROITE||etatMario==MARCHE_DROITE)){
                     regarderEnHaut=1;
                     positionMario.y+=1;
                     if(etatMario==NORMAL_GAUCHE||etatMario==MARCHE_GAUCHE)
                     etatMario=REGARDER_HAUT_GAUCHE;
                     else
                     etatMario=REGARDER_HAUT_DROITE;
                     }
                     break;

                     case SDLK_ESCAPE:
                     continuer=0;
                     break;

                 }
                 break;

                 case SDL_KEYUP:
                 switch(event.key.keysym.sym)
                 {

                     case SDLK_RIGHT:
                     allerADroite=0;
                     if(etatMario==MARCHE_DROITE)
                     etatMario=NORMAL_DROITE;
                     break;

                     case SDLK_LEFT:
                     allerAGauche=0;
                     if(etatMario==MARCHE_GAUCHE)
                     etatMario=NORMAL_GAUCHE;
                     break;
                     
                     case SDLK_DOWN:
                     if(abaisser&&(etatMario==ABAISSER_GAUCHE||etatMario==ABAISSER_DROITE)){
                     abaisser=0;
                     positionMario.y+=6;
                     if(etatMario==ABAISSER_GAUCHE)
                     etatMario=NORMAL_GAUCHE;
                     else
                     etatMario=NORMAL_DROITE;
                     }
                     break;
                     
                     case SDLK_UP:
                     if(regarderEnHaut&&(etatMario==REGARDER_HAUT_GAUCHE||etatMario==REGARDER_HAUT_DROITE)){
                     regarderEnHaut=0;
                     positionMario.y-=1;
                     if(etatMario==REGARDER_HAUT_GAUCHE)
                     etatMario=NORMAL_GAUCHE;
                     else
                     etatMario=NORMAL_GAUCHE;
                     }
                     break;
                     
                     case SDLK_SPACE:
                     space=0;
                     break;

                 }
                 break;

    }
    }
    if(!(mort))
    {
    
    if(toucheTerre){
    
    if(!(saut)){
    if(etatMario==SAUT_DESCENTE_GAUCHE)
    etatMario=NORMAL_GAUCHE;
    if(etatMario==SAUT_DESCENTE_DROITE)
    etatMario=NORMAL_DROITE;
    }
    if(space){
    if(!(saut))
    FSOUND_PlaySound(FSOUND_FREE, sauter);
    saut=1;
    
    if(etatMario==MARCHE_GAUCHE||etatMario==NORMAL_GAUCHE)
    etatMario=SAUT_GAUCHE;
    else
    etatMario=SAUT_DROITE;}
    }
    if(allerADroite)
    {
    	if (tempsActuel - deplacementPrecedent > 10)
        {
        	if(!(collisionMurDroite)&&!(abaisser)&&!(regarderEnHaut)){
        	if(positionMario.x>=100)
            deplacementDroite+=1;
            else
            positionMario.x+=1;
        	}
        	droit=1,gauche=0;
            deplacementPrecedent = tempsActuel;
        }
        if (tempsActuel - pasPrecedent > 100)
        {
            pasPrecedent = tempsActuel;
            if(saut)
            {
            if(etatMario==SAUT_GAUCHE)
            etatMario=SAUT_DROITE;
            }
            else if(toucheTerre&&!(abaisser)&&!(regarderEnHaut))
            {
            if(etatMario==MARCHE_DROITE)
            etatMario=NORMAL_DROITE;
            else
            etatMario=MARCHE_DROITE;
            }
        }
        

    }
    if(allerAGauche)
    {
        if (tempsActuel - deplacementPrecedent > 10)
        {
        	if(!(collisionMurGauche)&&!(abaisser)&&!(regarderEnHaut)){
        	if(deplacementDroite==0)
            positionMario.x-=1;
            if(!(arretGauche)){
            deplacementDroite-=1;
            }
        	}
            deplacementPrecedent = tempsActuel;
            gauche=1,droit=0;
        }
        if (tempsActuel - pasPrecedent > 100)
        {
            pasPrecedent = tempsActuel;
            if(saut)
            {
            if(etatMario==SAUT_DROITE)
            etatMario=SAUT_GAUCHE;
            }
            else if(toucheTerre&&!(abaisser)&&!(regarderEnHaut))
            {
            if(etatMario==MARCHE_GAUCHE)
            etatMario=NORMAL_GAUCHE;
            else
            etatMario=MARCHE_GAUCHE;
            }
        }
    }
    }
    if(saut)
    {	
    	if (tempsActuel - montePrecedent > VitesseSaut)
        {
            positionMario.y+=2;
            if(sautage>60)
            positionMario.y-=1;
            sautage++;
            montePrecedent = tempsActuel;
        }
    }
    if(sautage>90)
    {
    saut=0,sautage=0;
    if(etatMario==SAUT_DROITE)
    etatMario=SAUT_DESCENTE_DROITE;
    else
    etatMario=SAUT_DESCENTE_GAUCHE;
    }
    if(positionMario.y<0)
    {
    etatMario=NORMAL_DROITE;
    vie--;
    mort=0;
    ChargerMap(map,mapEntite,caracteristiqueMap,nombreEvents,nombreEntite);
    piece=0;
    abaisser=0;
    saut=0;
    sautage=0;
    regarderEnHaut=0;
    positionMario.x=100;
    positionMario.y=60;
    deplacementDroite=0;
    }
    if(vie<0)
    continuer=0;
    if(deplacementDroite<0)
    deplacementDroite=0;
    if(positionMario.x<18)
    positionMario.x=18;
    
    
    if(mort){
    	if (tempsActuel - mourrirPrecedent > 50)
        {
            

            if(etatMario==MORT1)
            etatMario=MORT2;
            else
            etatMario=MORT1;
            
            mourrirPrecedent = tempsActuel;
        }
    
    }


    }
    
    FMUSIC_StopSong(musique);
    


    TTF_CloseFont(police);
    TTF_CloseFont(police2);
    TTF_CloseFont(policeGrande);
    TTF_CloseFont(policeMenu);
    
    FMUSIC_FreeSong(musique);
    FSOUND_Sample_Free(prendrePiece);
    FSOUND_Sample_Free(pup);
    FSOUND_Sample_Free(sauter);

    TTF_Quit();
}

void ChargerMap(long map[NombreMaps][100][5],long mapEntite[NombreMaps][50][3],long caracteristiqueMap[NombreMaps][2],long nombreEvents[NombreMaps],long nombreEntite[NombreMaps])
{
    long i=0,j,k;
    char lire[50];

    FILE* niveau[NombreMaps] = {NULL};
    FILE* entite[NombreMaps] = {NULL};


    for(i=0;i<NombreMaps;i++)
    {
	sprintf(lire,"data/map/map%ld.txt",i);
	niveau[0] = fopen(lire, "r");
	sprintf(lire,"data/map/mapEntite%ld.txt",i);
	entite[0] = fopen(lire, "r");

    fscanf(niveau[i],"%ld;%ld\n",&caracteristiqueMap[i][0],&caracteristiqueMap[i][1]);

    fscanf(niveau[i],"%ld\n",&nombreEvents[i]);

    for(j=0;j<nombreEvents[i];j++){
    fscanf(niveau[i],"%ld;%ld;%ld;%ld;%ld\n",&map[i][j][0],&map[i][j][1],&map[i][j][2],&map[i][j][3],&map[i][j][4]);
    }
    
    fscanf(entite[i],"%ld\n",&nombreEntite[i]);
    
    for(j=0;j<nombreEntite[i];j++){
    fscanf(entite[i],"%ld;%ld;%ld;%ld;%ld\n",&mapEntite[i][j][0],&mapEntite[i][j][1],&mapEntite[i][j][2]);
    }

    fclose(niveau[i]);
    fclose(entite[i]);
    }


}

void DefinirPartieImage(SDL_Rect partieImageFond[4],SDL_Rect partieImageDecors[NombreDecors],SDL_Rect partieImageMario[NombreMario],SDL_Rect partieImageEntite[NombreEntite])
{
	//Definir les fonds
	partieImageFond[FORET].x=513;
    partieImageFond[FORET].y=0;
    partieImageFond[FORET].w=512;
    partieImageFond[FORET].h=432;

    partieImageFond[PILLIER_BLANC].x=0;
    partieImageFond[PILLIER_BLANC].y=0;
    partieImageFond[PILLIER_BLANC].w=512;
    partieImageFond[PILLIER_BLANC].h=432;

    partieImageFond[CRYSTAL_BLANC].x=0;
    partieImageFond[CRYSTAL_BLANC].y=0;
    partieImageFond[CRYSTAL_BLANC].w=256;
    partieImageFond[CRYSTAL_BLANC].h=223;

    partieImageFond[CRYSTAL_VERT].x=0;
    partieImageFond[CRYSTAL_VERT].y=0;
    partieImageFond[CRYSTAL_VERT].w=256;
    partieImageFond[CRYSTAL_VERT].h=223;


    //Definire les decors
    partieImageDecors[TERRE].x=214;
    partieImageDecors[TERRE].y=492;
    partieImageDecors[TERRE].w=68;
    partieImageDecors[TERRE].h=15;

    partieImageDecors[HERBE_DESSUS].x=214;
    partieImageDecors[HERBE_DESSUS].y=482;
    partieImageDecors[HERBE_DESSUS].w=68;
    partieImageDecors[HERBE_DESSUS].h=9;

    partieImageDecors[TERRE_COIN_GAUCHE].x=207;
    partieImageDecors[TERRE_COIN_GAUCHE].y=482;
    partieImageDecors[TERRE_COIN_GAUCHE].w=6;
    partieImageDecors[TERRE_COIN_GAUCHE].h=9;

    partieImageDecors[TERRE_COIN_DROIT].x=283;
    partieImageDecors[TERRE_COIN_DROIT].y=482;
    partieImageDecors[TERRE_COIN_DROIT].w=6;
    partieImageDecors[TERRE_COIN_DROIT].h=9;

    partieImageDecors[TERRE_GAUCHE].x=207;
    partieImageDecors[TERRE_GAUCHE].y=492;
    partieImageDecors[TERRE_GAUCHE].w=6;
    partieImageDecors[TERRE_GAUCHE].h=15;

    partieImageDecors[TERRE_DROITE].x=283;
    partieImageDecors[TERRE_DROITE].y=492;
    partieImageDecors[TERRE_DROITE].w=6;
    partieImageDecors[TERRE_DROITE].h=15;

    partieImageDecors[HERBE_COIN_GAUCHE].x=5;
    partieImageDecors[HERBE_COIN_GAUCHE].y=443;
    partieImageDecors[HERBE_COIN_GAUCHE].w=18;
    partieImageDecors[HERBE_COIN_GAUCHE].h=9;

    partieImageDecors[HERBE_COIN_DROIT].x=147;
    partieImageDecors[HERBE_COIN_DROIT].y=443;
    partieImageDecors[HERBE_COIN_DROIT].w=18;
    partieImageDecors[HERBE_COIN_DROIT].h=9;

    partieImageDecors[HERBE_GAUCHE].x=5;
    partieImageDecors[HERBE_GAUCHE].y=452;
    partieImageDecors[HERBE_GAUCHE].w=18;
    partieImageDecors[HERBE_GAUCHE].h=15;

    partieImageDecors[HERBE_DROITE].x=147;
    partieImageDecors[HERBE_DROITE].y=452;
    partieImageDecors[HERBE_DROITE].w=18;
    partieImageDecors[HERBE_DROITE].h=15;

    partieImageDecors[HERBE_COIN_INFERIEUR_GAUCHE].x=147;
    partieImageDecors[HERBE_COIN_INFERIEUR_GAUCHE].y=475;
    partieImageDecors[HERBE_COIN_INFERIEUR_GAUCHE].w=18;
    partieImageDecors[HERBE_COIN_INFERIEUR_GAUCHE].h=9;

    partieImageDecors[HERBE_COIN_INFERIEUR_DROIT].x=175;
    partieImageDecors[HERBE_COIN_INFERIEUR_DROIT].y=460;
    partieImageDecors[HERBE_COIN_INFERIEUR_DROIT].w=18;
    partieImageDecors[HERBE_COIN_INFERIEUR_DROIT].h=9;


    //Definir mario
    partieImageMario[NORMAL_DROITE].x=136;
    partieImageMario[NORMAL_DROITE].y=8;
    partieImageMario[NORMAL_DROITE].w=14;
    partieImageMario[NORMAL_DROITE].h=20;
    
    partieImageMario[MARCHE_DROITE].x=208;
    partieImageMario[MARCHE_DROITE].y=8;
    partieImageMario[MARCHE_DROITE].w=15;
    partieImageMario[MARCHE_DROITE].h=20;
    
    partieImageMario[ABAISSER_DROITE].x=261;
    partieImageMario[ABAISSER_DROITE].y=14;
    partieImageMario[ABAISSER_DROITE].w=15;
    partieImageMario[ABAISSER_DROITE].h=14;
    
    partieImageMario[REGARDER_HAUT_DROITE].x=71;
    partieImageMario[REGARDER_HAUT_DROITE].y=7;
    partieImageMario[REGARDER_HAUT_DROITE].w=15;
    partieImageMario[REGARDER_HAUT_DROITE].h=21;
    
    partieImageMario[SAUT_DROITE].x=225;
    partieImageMario[SAUT_DROITE].y=6;
    partieImageMario[SAUT_DROITE].w=16;
    partieImageMario[SAUT_DROITE].h=22;
    
    partieImageMario[SAUT_DESCENTE_DROITE].x=242;
    partieImageMario[SAUT_DESCENTE_DROITE].y=8;
    partieImageMario[SAUT_DESCENTE_DROITE].w=16;
    partieImageMario[SAUT_DESCENTE_DROITE].h=20;
    
    partieImageMario[NORMAL_GAUCHE].x=186;
    partieImageMario[NORMAL_GAUCHE].y=41;
    partieImageMario[NORMAL_GAUCHE].w=14;
    partieImageMario[NORMAL_GAUCHE].h=20;
    
    partieImageMario[MARCHE_GAUCHE].x=114;
    partieImageMario[MARCHE_GAUCHE].y=41;
    partieImageMario[MARCHE_GAUCHE].w=15;
    partieImageMario[MARCHE_GAUCHE].h=20;
    
    partieImageMario[ABAISSER_GAUCHE].x=60;
    partieImageMario[ABAISSER_GAUCHE].y=47;
    partieImageMario[ABAISSER_GAUCHE].w=15;
    partieImageMario[ABAISSER_GAUCHE].h=14;
    
    partieImageMario[REGARDER_HAUT_GAUCHE].x=250;
    partieImageMario[REGARDER_HAUT_GAUCHE].y=40;
    partieImageMario[REGARDER_HAUT_GAUCHE].w=15;
    partieImageMario[REGARDER_HAUT_GAUCHE].h=21;
    
    partieImageMario[SAUT_GAUCHE].x=95;
    partieImageMario[SAUT_GAUCHE].y=39;
    partieImageMario[SAUT_GAUCHE].w=16;
    partieImageMario[SAUT_GAUCHE].h=22;
    
    partieImageMario[SAUT_DESCENTE_GAUCHE].x=78;
    partieImageMario[SAUT_DESCENTE_GAUCHE].y=41;
    partieImageMario[SAUT_DESCENTE_GAUCHE].w=16;
    partieImageMario[SAUT_DESCENTE_GAUCHE].h=20;
    
    partieImageMario[MORT1].x=297;
    partieImageMario[MORT1].y=4;
    partieImageMario[MORT1].w=16;
    partieImageMario[MORT1].h=24;
    
    partieImageMario[MORT2].x=317;
    partieImageMario[MORT2].y=4;
    partieImageMario[MORT2].w=16;
    partieImageMario[MORT2].h=24;
    
    
    
    
    //Definir les entites
    
    partieImageEntite[PIECE].x=591;
    partieImageEntite[PIECE].y=31;
    partieImageEntite[PIECE].w=12;
    partieImageEntite[PIECE].h=16;
    
    partieImageEntite[PIECE2].x=604;
    partieImageEntite[PIECE2].y=31;
    partieImageEntite[PIECE2].w=12;
    partieImageEntite[PIECE2].h=16;
    
    partieImageEntite[PIECE3].x=614;
    partieImageEntite[PIECE3].y=31;
    partieImageEntite[PIECE3].w=12;
    partieImageEntite[PIECE3].h=16;
    
    partieImageEntite[PIECE4].x=624;
    partieImageEntite[PIECE4].y=31;
    partieImageEntite[PIECE4].w=12;
    partieImageEntite[PIECE4].h=16;
    
    partieImageEntite[TORTUE_ROUGE_NORMAL_DROITE].x=22;
    partieImageEntite[TORTUE_ROUGE_NORMAL_DROITE].y=4;
    partieImageEntite[TORTUE_ROUGE_NORMAL_DROITE].w=16;
    partieImageEntite[TORTUE_ROUGE_NORMAL_DROITE].h=27;
    
    partieImageEntite[TORTUE_ROUGE_MARCHE_DROITE].x=41;
    partieImageEntite[TORTUE_ROUGE_MARCHE_DROITE].y=4;
    partieImageEntite[TORTUE_ROUGE_MARCHE_DROITE].w=16;
    partieImageEntite[TORTUE_ROUGE_MARCHE_DROITE].h=27;
    
    partieImageEntite[TORTUE_ROUGE_NORMAL_GAUCHE].x=1286;
    partieImageEntite[TORTUE_ROUGE_NORMAL_GAUCHE].y=4;
    partieImageEntite[TORTUE_ROUGE_NORMAL_GAUCHE].w=16;
    partieImageEntite[TORTUE_ROUGE_NORMAL_GAUCHE].h=27;
    
    partieImageEntite[TORTUE_ROUGE_MARCHE_GAUCHE].x=1267;
    partieImageEntite[TORTUE_ROUGE_MARCHE_GAUCHE].y=4;
    partieImageEntite[TORTUE_ROUGE_MARCHE_GAUCHE].w=16;
    partieImageEntite[TORTUE_ROUGE_MARCHE_GAUCHE].h=27;

    partieImageEntite[TORTUE_CARAPACE_ROUGE].x=288;
    partieImageEntite[TORTUE_CARAPACE_ROUGE].y=15;
    partieImageEntite[TORTUE_CARAPACE_ROUGE].w=16;
    partieImageEntite[TORTUE_CARAPACE_ROUGE].h=16;
    
    
    

}










